<?xml version="1.0"?>
<component name="org.nuxeo.platform.TemplateSources.operations.override">

  <require>org.nuxeo.platform.TemplateSources.operations</require>

  <documentation>

  Contribute Operation to encapsulate TemplateProcessor rendering features
  @author Tiry (tdelprat@nuxeo.com)

  </documentation>
  <extension point="operation" target="org.nuxeo.automation.scripting.internals.AutomationScriptingComponent">

    <scriptedOperation id="javascript.FilterTemplatesByType">
      <inputType>document</inputType>
      <outputType>documents</outputType>
      <category>javascript</category>
      <description>Filter templates according to the type of a given input document.</description>
      <script><![CDATA[
        function run(input, params) {
          return Repository.Query(null, {
            'query': 'select * from Document where ecm:mixinType = "Template" AND ecm:isTrashed = 0 AND tmpl:applicableTypes IN ( "all", "' + input['type'] + '") AND ecm:isVersion = 0'
          });
        }
      ]]></script>
    </scriptedOperation>

    <scriptedOperation id="javascript.RenderPdf">
      <inputType>document</inputType>
      <outputType>blob</outputType>
      <category>javascript</category>
      <param name="templateName" type="string"/>
      <param name="attach" type="boolean"/>
      <param name="templateData" type="string"/>
      <description>Render a document with a given template and converts it to PDF.</description>
      <script><![CDATA[
        function run(input, params) {
          var blob = TemplateProcessor.Render(input, {
            'templateName': params.templateName,
            'attach': params.attach || false,
            'templateData': params.templateData || null
          });
          return Blob.RunConverter(blob, {'converter': 'any2pdf'});
        }
      ]]></script>
    </scriptedOperation>

  </extension>

</component>
